package com.situ.javase.day8;

import java.util.function.IntPredicate;

import org.junit.Test;

public class Demo {

	public static void main(String[] args) {
		// 子类继承的AbstractDoor所以具有了open和close方法
		// 子类实现了IAlarm接口，所以具有了alarm报警方法
		MyDoor myDoor = new MyDoor();
		myDoor.open();
		myDoor.alarm();
		
		// 现在是以AbstractDoor门的角度去看new出来的子类对象，
		// 我只能看到AbstractDoor里面定义的open和close方法
		AbstractDoor abstractDoor = new MyDoor();
		abstractDoor.open();
		//abstractDoor.alarm();
		
		// 现在是以IAlarm的角度去看new出来的子类对象，
		// 我只能看到IAlarm里面定义的alarm方法
		IAlarm alarm = new MyDoor();
		//alarm.open();
		alarm.alarm();
	}
	
	
	@Test
	public void test1() {
		Student student1 = new Student(1, "张三", 23, "CN");
		Student student2 = new Student(2, "李四", 22, "CN");
		// 实例变量、实例方法必须通过对象调用
		System.out.println(student1.name);
		student1.print();
		// 静态变量既可以通过对象调用也可以通过类名.方式调用
		// The static field Student.country should be accessed in a static way
		System.out.println(student1.country);
		System.out.println(Student.country);
		student1.show();
		Student.show();
	}
	
	@Test
	public void test3() {
		Teacher teacher1 = new Teacher();
		Teacher teacher2 = new Teacher();
		
	}
	
	@Test
	public void test4() {
		int max = MathUtil.max(3, 5);
		System.out.println(max);
		// MathUtil mathUtil = new MathUtil();
		// mathUtil.max(num1, num2)
		// Math.max(3, 5);
	}
	
	
	@Test
	public void test5() {
		int[] array = {23, 4, 75, 8};
		int max = ArrayUtil.max(array);
		System.out.println(max);
	}
}
